home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - DOS Part 1 / DOS002.dsk / PETLOADER INSTRUCTIONS.bas < prev    next >
BASIC Source File  |  2012-02-16  |  22KB  |  506 lines

  1. 100  TEXT : NORMAL : HOME 
  2. 1000  PRINT "'P E T   L O A D E R'  --  BY FALKNER"
  3. 1020  PRINT "  (LOAD PET PROGRAMS INTO AN APPLE)"
  4. 1030  PRINT ""
  5. 1040  PRINT "*****   1. INTRODUCTION."
  6. 1050  PRINT ""
  7. 1060  PRINT "BOTH  THE COMMODORE PET  AND THE APPLE"
  8. 1070  PRINT "ARE BASED  ON THE 6502 MICROPROCESSOR,"
  9. 1080  PRINT "AND  MICROSOFT  WROTE  BOTH  COMMODORE"
  10. 1090  PRINT "BASIC AND APPLESOFT.  COULD IT BE THAT"
  11. 1100  PRINT "THESE SIMILARITIES  WOULD ENABLE ME TO"
  12. 1110  PRINT "WRITE A PROGRAM  TO LOAD  PET PROGRAMS"
  13. 1120  PRINT "INTO  MY APPLE?  I PROVED  THEY WOULD,"
  14. 1130  PRINT "AND THIS ARTICLE DESCRIBES THE PROGRAM"
  15. 1140  PRINT "WHICH RESULTED,  CALLED  'PET LOADER'."
  16. 1150  PRINT "THE SIMILARITIES IN THE BASIC LANGUAGE"
  17. 1160  PRINT "WERE  ESSENTIAL TO THIS  PROJECT;  THE"
  18. 1170  PRINT "COMMON 6502 PROCESSOR  DID NOT MATTER."
  19. 1180  PRINT ""
  20. 1190  PRINT "*****   2. ABSTRACT."
  21. 1200  PRINT ""
  22. 1210  PRINT "THE PROGRAM OPERATES  IN AN APPLE WITH"
  23. 1220  PRINT "APPLESOFT  IN ROM,  AND LOADS PROGRAMS"
  24. 1230  PRINT "SAVED ONTO TAPE  BY ANY COMMODORE PET."
  25. 1231  GOSUB 9999
  26. 1240  PRINT "THE APPLE  MUST HAVE  2K  MORE  MEMORY"
  27. 1250  PRINT "THAN  THE PET ABSOLUTELY NEEDED  (E.G."
  28. 1260  PRINT "A PROGRAM  WHICH JUST FIT IN AN 8K PET"
  29. 1270  PRINT "WILL  JUST FIT  IN 10K  OF THE APPLE)."
  30. 1280  PRINT "THERE IS NO CERTAINTY THAT ANY PROGRAM"
  31. 1290  PRINT "SO LOADED WILL ACTUALLY RUN,  BUT MANY"
  32. 1300  PRINT "IN FACT OPERATE  PERFECTLY.  ALL ERROR"
  33. 1310  PRINT "CONDITIONS ARE DETECTED,  AND ATTEMPTS"
  34. 1320  PRINT "ARE MADE  TO RECOVER FROM TAPE ERRORS."
  35. 1330  PRINT "THERE IS  NO REQUIREMENT  FOR  A DISK."
  36. 1340  PRINT ""
  37. 1350  PRINT "*****   3. METHOD (BRIEFLY)."
  38. 1360  PRINT ""
  39. 1370  PRINT "THE PROGRAM PRINTS A GREETING AND ASKS"
  40. 1380  PRINT "FOR  A PET PROGRAM TAPE,  THEN A PRESS"
  41. 1390  PRINT "OF A KEY  STARTS THE LOADING  PROCESS."
  42. 1400  PRINT "'PET LOADER'  FINDS  AND  VERIFIES THE"
  43. 1410  PRINT "LABEL OF THE TAPE,  AND FROM IT LEARNS"
  44. 1420  PRINT "THE  PROGRAM NAME  AND  THE  AMOUNT OF"
  45. 1430  PRINT "MEMORY REQUIRED.  THE IMAGE OF THE PET"
  46. 1440  PRINT "PROGRAM IS LOADED INTO MEMORY,  THEN A"
  47. 1450  PRINT "BEEP  SIGNALS  THAT  THE  TAPE  MAY BE"
  48. 1460  PRINT "STOPPED.  THE LOADED IMAGE IS SCANNED,"
  49. 1461  GOSUB 9999
  50. 1470  PRINT "AND PET TOKENS (AND SOME PET DATA) ARE"
  51. 1480  PRINT "CONVERTED  TO THE APPLE  EQUIVALENT IF"
  52. 1490  PRINT "SUCH EXISTS.  WHEN NO APPLE EQUIVALENT"
  53. 1500  PRINT "EXISTS, A HELPFUL SUBSTITUTION IS MADE"
  54. 1510  PRINT "(E.G. $B3, THE APPLE TOKEN FOR  " CHR$(162)"STOP" CHR$(162)""
  55. 1520  PRINT "REPLACES  THE PET TOKEN FOR  " CHR$(162)"CMD" CHR$(162)", SO"
  56. 1530  PRINT "THAT  OPERATION  OF THE  CONVERTED PET"
  57. 1540  PRINT "PROGRAM  WILL CEASE  AT  THE POINT  OF"
  58. 1550  PRINT "INCOMPATIBILITY).  THE  CONVERTED  PET"
  59. 1560  PRINT "PROGRAM  CAN THEN BE  LISTED, ALTERED,"
  60. 1570  PRINT "SAVED, AND/OR MAYBE RUN.  'PET LOADER'"
  61. 1580  PRINT "CAN BE  RESTARTED  FROM ITS  BEGINNING"
  62. 1590  PRINT "AT ANY TIME,  EVEN  AFTER  IT HAS RUN."
  63. 1600  PRINT "'PET LOADER'  IS AN  ASSEMBLY-LANGUAGE"
  64. 1610  PRINT "PROGRAM,  BUT FOR  CONVENIENCE  IT  IS"
  65. 1620  PRINT "DISGUISED AS AN APPLESOFT PROGRAM, AND"
  66. 1630  PRINT "CAN BE LOADED AND SAVED AS SUCH (UNTIL"
  67. 1640  PRINT "IT HAS BEEN RUN,  BUT NOT AFTER THAT)."
  68. 1650  PRINT " "
  69. 1660  PRINT "*****   4. ERROR CONDITIONS."
  70. 1670  PRINT ""
  71. 1680  PRINT "THESE ERRORS CAN OCCUR, PREVENTING THE"
  72. 1690  PRINT "INTENDED  CONVERSION  OF THE  PROGRAM:"
  73. 1691  GOSUB 9999
  74. 1700  PRINT ""
  75. 1710  PRINT "   1. 'PET LOADER'  CANNOT  FIND THE"
  76. 1720  PRINT "      LABEL OF THE PET PROGRAM TAPE."
  77. 1730  PRINT ""
  78. 1740  PRINT "   2. THE LABEL CANNOT BE CORRECTLY"
  79. 1750  PRINT "      READ  (TWO  TRIES  ARE  MADE)."
  80. 1760  PRINT ""
  81. 1770  PRINT "   3. THE LABEL SAYS  THIS IS NOT A"
  82. 1780  PRINT "      BASIC PROGRAM (PROBABLY DATA)."
  83. 1790  PRINT ""
  84. 1800  PRINT "   4. THE  PET PROGRAM  IS  TOO BIG"
  85. 1810  PRINT "      FOR THE APPLE'S USABLE MEMORY."
  86. 1820  PRINT ""
  87. 1830  PRINT "   5. 'PET LOADER'  CANNOT  FIND THE"
  88. 1840  PRINT "      IMAGE  OF THE  BASIC  PROGRAM."
  89. 1850  PRINT ""
  90. 1860  PRINT "TO CONSERVE MEMORY,  THE ERROR MESSAGE"
  91. 1870  PRINT "FOR THE ABOVE IS A SINGLE DIGIT (1-5),"
  92. 1880  PRINT "FOLLOWED BY 'ERR',  THEN A BEEP.  'PET"
  93. 1890  PRINT "LOADER' HAS FAILED TO LOAD THE PROGRAM"
  94. 1900  PRINT "BUT ANOTHER TRY  CAN BE BEGUN WITH THE"
  95. 1910  PRINT "& KEY, WITHOUT RELOADING 'PET LOADER'."
  96. 1920  PRINT ""
  97. 1921  GOSUB 9999
  98. 1930  PRINT "PLEASE NOTE:  THE ABOVE  EXCLUDES  THE"
  99. 1940  PRINT "SITUATION  WHEN  THE IMAGE  OF THE PET"
  100. 1950  PRINT "PROGRAM  CANNOT  BE  READ  ACCURATELY."
  101. 1960  PRINT "IN THIS  EVENT,  'PET LOADER'  BRAVELY"
  102. 1970  PRINT "CARRIES ON, AND MAY OR MAY NOT PRODUCE"
  103. 1980  PRINT "MEANINGFUL RESULTS; FOR ANY BYTE WHICH"
  104. 1990  PRINT "WAS NOT  CORRECTLY READ,  'PET LOADER'"
  105. 2000  PRINT "SUBSTITUTES  $FC, WHICH IS APPLESOFT'S"
  106. 2010  PRINT "TOKEN FOR  " CHR$(162)" ERROR(BEEP) " CHR$(162)".  THESE ARE"
  107. 2020  PRINT "AUDIBLY  DISCLOSED  IF THE USER  LISTS"
  108. 2030  PRINT "THE CONVERTED PROGRAM, AFTER WHICH THE"
  109. 2040  PRINT "USER  CAN DECIDE  WHETHER  TO PATCH UP"
  110. 2050  PRINT "THE PROGRAM OR JUST ABANDON IT.  (THIS"
  111. 2060  PRINT "APPROACH IS JUSTIFIED BY  A RHETORICAL"
  112. 2070  PRINT "QUESTION: " CHR$(162)"IF 'PET LOADER' CANNOT READ"
  113. 2080  PRINT "THE TAPE,  THEN  WHAT ON EARTH  CAN?" CHR$(162)")"
  114. 2090  PRINT ""
  115. 2100  PRINT "*****   6. OPERATION."
  116. 2110  PRINT ""
  117. 2120  PRINT "HERE IS HOW TO OPERATE 'PET LOADER':"
  118. 2130  PRINT ""
  119. 2140  PRINT "   1. READY AN APPLE,  EQUIPPED WITH"
  120. 2150  PRINT "      APPLESOFT  IN ROM,  TO RUN  AN"
  121. 2151  GOSUB 9999
  122. 2160  PRINT "      APPLESOFT PROGRAM  AT STANDARD"
  123. 2170  PRINT "      MEMORY LOCATION  2048  ($800)."
  124. 2180  PRINT "      (I.E. JUST TURN THE APPLE ON!)"
  125. 2190  PRINT ""
  126. 2200  PRINT ""
  127. 2210  PRINT "   2. LOAD  'PET LOADER'  FROM  DISK"
  128. 2220  PRINT "      OR TAPE,  AND RUN IT.  IT WILL"
  129. 2230  PRINT "      STOP,  ASKING FOR  A PET TAPE."
  130. 2240  PRINT ""
  131. 2250  PRINT "   3. (TO BREAK OUT,  TYPE  CTRL-C.)"
  132. 2260  PRINT ""
  133. 2270  PRINT "   4. REWIND (OR OTHERWISE POSITION)"
  134. 2280  PRINT "      A PET PROGRAM TAPE, THEN PRESS"
  135. 2290  PRINT "      'PLAY'  ON THE TAPE UNIT,  AND"
  136. 2300  PRINT "      PRESS ANY KEY ON THE KEYBOARD."
  137. 2310  PRINT ""
  138. 2320  PRINT "   5. WITHIN 20 SECONDS, THE NAME OF"
  139. 2330  PRINT "      THE PET PROGRAM SHOULD APPEAR."
  140. 2340  PRINT "      IT IS NOT NECESSARILY AN ERROR"
  141. 2350  PRINT "      IF THIS TAKES SEVERAL MINUTES."
  142. 2360  PRINT ""
  143. 2370  PRINT "   6. RELAX!  PROGRAMS LOAD  SLOWLY."
  144. 2380  PRINT "      (E.G.  20K  IN NINE  MINUTES!)"
  145. 2381  GOSUB 9999
  146. 2390  PRINT ""
  147. 2400  PRINT "   7. AT THE  BEEP,  STOP  THE TAPE."
  148. 2410  PRINT "      'PET LOADER' WILL SOON  FINISH"
  149. 2420  PRINT "      ITS  CONVERSIONS,  PRINT " CHR$(162)"OK" CHR$(162)","
  150. 2430  PRINT "      AND RETURN CONTROL  TO APPLE'S"
  151. 2440  PRINT "      KEYBOARD. "
  152. 2450  PRINT ""
  153. 2460  PRINT "   8. LIST, CHANGE, SAVE, OR RUN THE"
  154. 2470  PRINT "      CONVERTED PROGRAM  AS DESIRED."
  155. 2480  PRINT ""
  156. 2490  PRINT "   9. IF A NUMBERED ERROR MESSAGE IS"
  157. 2500  PRINT "      SHOWN,  REFER TO ITEM 4 ABOVE."
  158. 2510  PRINT " "
  159. 2520  PRINT "  10. AFTER A SUCCESSFUL  LOAD, 'PET"
  160. 2530  PRINT "      LOADER' CAN BE RESTARTED  WITH"
  161. 2540  PRINT "      THE APPLESOFT COMMAND " CHR$(162)"&" CHR$(162)",  OR"
  162. 2550  PRINT "      ALTERNATIVELY " CHR$(162)"CALL 2064" CHR$(162)"."
  163. 2560  PRINT ""
  164. 2570  PRINT "NOTE:  PET TAPES  ARE  INTRINSICALLY A"
  165. 2580  PRINT "LITTLE LOUDER THAN APPLE TAPES. IT MAY"
  166. 2590  PRINT "BE APPROPRIATE TO USE A VOLUME SETTING"
  167. 2600  PRINT "ABOUT 10-20% LOWER THAN THE USUAL ONE."
  168. 2610  PRINT ""
  169. 2611  GOSUB 9999
  170. 2620  PRINT "*****   7. RELIABILITY."
  171. 2630  PRINT ""
  172. 2640  PRINT "EXTENSIVE TESTING HAS SHOWN THAT  'PET"
  173. 2650  PRINT "LOADER' IS RELIABLE AND ACCURATE. THIS"
  174. 2660  PRINT "IS LARGELY DUE TO THE METHOD COMMODORE"
  175. 2670  PRINT "CHOSE TO RECORD DATA ON TAPE. SPECIFIC"
  176. 2680  PRINT "INFORMATION  CAN BE  GLEANED  FROM THE"
  177. 2690  PRINT "PROGRAM  LISTING.  INADVERTANT  CLUMSY"
  178. 2700  PRINT "OPERATION OF A TAPE UNIT DAMAGED A PET"
  179. 2710  PRINT "PROGRAM TAPE,  FORTUNATELY PROVIDING A"
  180. 2720  PRINT "TEST OF THE ERROR-RECOVERY  CAPABILITY"
  181. 2730  PRINT "OF 'PET LOADER'.  IT ACCURATELY LOADED"
  182. 2740  PRINT "A PROGRAM SO BADLY DAMAGED  THAT A PET"
  183. 2750  PRINT "COULD NOT LOAD IT  AT ALL.  EXPERIENCE"
  184. 2760  PRINT "WITH 30-MINUTE TAPES JAMMED END-TO-END"
  185. 2770  PRINT "WITH PROGRAMS REPEATEDLY PRODUCED 100%"
  186. 2780  PRINT "SUCCESSFUL LOADS OF  ALL THE PROGRAMS."
  187. 2790  PRINT ""
  188. 2800  PRINT "*****   8. CONVERSION."
  189. 2810  PRINT ""
  190. 2820  PRINT "A PET PROGRAM  LOADED INTO AN APPLE IS"
  191. 2830  PRINT "STILL A PET PROGRAM. SOME WILL OPERATE"
  192. 2840  PRINT "PERFECTLY,  OTHERS WILL REQUIRE SLIGHT"
  193. 2841  GOSUB 9999
  194. 2850  PRINT "CHANGES, WHILE MANY WILL BE SO RIDDLED"
  195. 2860  PRINT "WITH CODE  SPECIFIC TO THE PET THAT IT"
  196. 2870  PRINT "WOULD BE POINTLESS TO EVEN TRY TO MAKE"
  197. 2880  PRINT "THEM RUN.  HERE ARE THE MAJOR AREAS OF"
  198. 2890  PRINT "DIFFERENCE BETWEEN COMMODORE BASIC AND"
  199. 2900  PRINT "APPLESOFT:"
  200. 2910  PRINT ""
  201. 2920  PRINT "   1. NO EQUIVALENT VERB IN APPLE."
  202. 2930  PRINT ""
  203. 2940  PRINT "      " CHR$(162)"OPEN" CHR$(162)",  " CHR$(162)"CLOSE" CHR$(162)",   " CHR$(162)"CMD" CHR$(162)"  AND"
  204. 2950  PRINT "      " CHR$(162)"VERIFY" CHR$(162)"    ARE   COMMANDS  IN"
  205. 2960  PRINT "      COMMODORE BASIC. EACH OF THESE"
  206. 2970  PRINT "      IS TRANSLATED INTO " CHR$(162)"STOP" CHR$(162)", AND"
  207. 2980  PRINT "      THE USER WILL HAVE TO DECIPHER"
  208. 2990  PRINT "      THE PROGRAMMER'S  INTENT,  AND"
  209. 3000  PRINT "      PROGRAM EQUIVALENT APPLE CODE."
  210. 3010  PRINT "      (CONTEXT  OUGHT  TO IMPLY WHAT"
  211. 3020  PRINT "      THE VERB WAS IN THE PET.)"
  212. 3030  PRINT ""
  213. 3040  PRINT "   2. SPECIFIC ADDRESS REFERENCE."
  214. 3050  PRINT ""
  215. 3060  PRINT "      " CHR$(162)"PEEK" CHR$(162)" AND  " CHR$(162)"POKE" CHR$(162)" AND  " CHR$(162)"CALL" CHR$(162)""
  216. 3070  PRINT "      (PET  " CHR$(162)"SYS" CHR$(162)"  =  APPLE  " CHR$(162)"CALL" CHR$(162)")"
  217. 3071  GOSUB 9999
  218. 3080  PRINT "      ARE  ALWAYS  MACHINE-SPECIFIC,"
  219. 3090  PRINT "      AND ALL THESE  MUST BE HANDLED"
  220. 3100  PRINT "      INDIVIDUALLY.  PERHAPS WHOEVER"
  221. 3110  PRINT "      PROVIDED   THE  PET  TAPE  CAN"
  222. 3120  PRINT "      LOAN  SOME  MANUALS  OR  OFFER"
  223. 3130  PRINT "      SOME HINTS. I OFFER SOME BELOW."
  224. 3140  PRINT ""
  225. 3150  PRINT ""
  226. 3160  PRINT "   3. SPECIFIC DEVICE REFERENCE."
  227. 3170  PRINT ""
  228. 3180  PRINT "      PROGRAMS CONTAINING " CHR$(162)"OPEN" CHR$(162)" AND"
  229. 3190  PRINT "      " CHR$(162)"CLOSE" CHR$(162)"   WILL  ALSO   CONTAIN"
  230. 3200  PRINT "      " CHR$(162)"INPUT#" CHR$(162)" &/OR " CHR$(162)"PRINT#" CHR$(162)",  WHICH"
  231. 3210  PRINT "      ARE SIMPLY TRANSLATED TO " CHR$(162)"IN#" CHR$(162)""
  232. 3220  PRINT "      AND " CHR$(162)"PR#" CHR$(162)" RESPECTIVELY. EITHER"
  233. 3230  PRINT "      WRITE CODE FOR DOS,  OR DELETE"
  234. 3240  PRINT "      USE OF THE DEVICE IN QUESTION."
  235. 3250  PRINT ""
  236. 3260  PRINT "   4. CURSOR CONTROL."
  237. 3270  PRINT ""
  238. 3280  PRINT "      PET HAS 10 KEYS FOR CONTROL OF"
  239. 3290  PRINT "      THE POSITION  OR ACTION OF THE"
  240. 3300  PRINT "      CURSOR.  THESE ARE TRANSLATED:"
  241. 3301  GOSUB 9999
  242. 3310  PRINT ""
  243. 3320  PRINT "        (2) FUNCTIONAL EQUIVALENTS,"
  244. 3330  PRINT "      "
  245. 3340  PRINT "        CURSOR-LEFT BECOMES BACKSPACE"
  246. 3350  PRINT "        AND LOOKS LIKE " CHR$(162)"GR" CHR$(162)" WHEN SEEN"
  247. 3360  PRINT "        INSIDE QUOTES;"
  248. 3370  PRINT ""
  249. 3380  PRINT "        CURSOR-DOWN  BECOMES   CTRL-J"
  250. 3390  PRINT "        AND  LOOKS  LIKE  " CHR$(162)"PR#" CHR$(162)"  WHEN "
  251. 3400  PRINT "        SEEN INSIDE QUOTES;"
  252. 3410  PRINT ""
  253. 3420  PRINT "        (1) DESTRUCTIVE APPROXIMATION"
  254. 3430  PRINT ""
  255. 3440  PRINT "        CURSOR-RIGHT  BECOMES  SPACE,"
  256. 3450  PRINT "        WHICH   OBLITERATES  WHAT  IT "
  257. 3460  PRINT "        SPACES PAST,  AND  LOOKS LIKE"
  258. 3470  PRINT "        " CHR$(162)"COLOR=" CHR$(162)" WHEN SEEN IN QUOTES;"
  259. 3480  PRINT ""
  260. 3490  PRINT "        (7) NON-FUNCTIONAL COMMENTS"
  261. 3500  PRINT ""
  262. 3510  PRINT "        WHEN  THE PROGRAM  IS LISTED,"
  263. 3520  PRINT "        THESE APPEAR, AND IT LOOKS AS"
  264. 3530  PRINT "        IF  THE NAME  OF THE KEY WILL"
  265. 3531  GOSUB 9999
  266. 3540  PRINT "        PRINT, FOR EXAMPLE:"
  267. 3550  PRINT ""
  268. 3560  PRINT "          100 PRINT " CHR$(162)" CLEAR " CHR$(162)""
  269. 3570  PRINT "          110 PRINT " CHR$(162)" INVERSE INSTRUC"
  270. 3580  PRINT "                TIONS NORMAL " CHR$(162)""
  271. 3590  PRINT ""
  272. 3600  PRINT "        IN FACT WHAT IS SEEN IS:"
  273. 3610  PRINT ""
  274. 3620  PRINT "          (WHAT WAS ALREADY THERE)"
  275. 3630  PRINT "          ="
  276. 3640  PRINT "          INSTRUCTIONS"
  277. 3650  PRINT ""
  278. 3660  PRINT "        LINE 100  PRODUCED  THE EQUAL"
  279. 3670  PRINT "        SIGN,  AND  LINE 110  DID NOT"
  280. 3680  PRINT "        CAUSE  VIDEO INVERSION.  'PET"
  281. 3690  PRINT "        LOADER'  SUBSTITUTED  A TOKEN"
  282. 3700  PRINT "        FOR THE CURSOR-CONTROL KEY IN"
  283. 3710  PRINT "        EACH CASE,  CHOOSING  A TOKEN"
  284. 3720  PRINT "        WHICH  WOULD MAKE  THE INTENT"
  285. 3730  PRINT "        OF THE  PET  PROGRAM  EASY TO"
  286. 3740  PRINT "        DISCOVER.  WHAT  YOU  SEE  IS"
  287. 3750  PRINT "        DEFINITELY  NOT WHAT YOU GET!"
  288. 3760  PRINT ""
  289. 3761  GOSUB 9999
  290. 3770  PRINT "        INTENT     LISTS AS    ACTION"
  291. 3780  PRINT "        ------     --------    ------"
  292. 3790  PRINT "                             "
  293. 3800  PRINT "        REVERSE    INVERSE     NONE"
  294. 3810  PRINT "        REV OFF    NORMAL      NONE"
  295. 3820  PRINT "        CUR UP     VLIN        NONE"
  296. 3830  PRINT "        CUR HOME   HOME        NONE"
  297. 3840  PRINT "        CLEAR      CLEAR       PRINT ="
  298. 3850  PRINT "        INSERT     IN#         NONE"
  299. 3860  PRINT "        DELETE     DEL         NONE"
  300. 3870  PRINT ""
  301. 3880  PRINT "      IN ALL CASES  BUT THE LAST TWO,"
  302. 3890  PRINT "      THE  EQUIVALENT  APPLE  CODE IS"
  303. 3900  PRINT "      OBVIOUS. THE LOGIC FOR " CHR$(162)"INSERT" CHR$(162)""
  304. 3910  PRINT "      AND " CHR$(162)"DELETE" CHR$(162)" IS VERY  DIFFICULT"
  305. 3920  PRINT "      TO INSTALL. PERHAPS A DIFFERENT"
  306. 3930  PRINT "      APPROACH WOULD BE BEST ..."
  307. 3940  PRINT ""
  308. 3950  PRINT "   5. PRINTING OF NUMBERS."
  309. 3960  PRINT ""
  310. 3970  PRINT "      290 X=4:Y=-6"
  311. 3980  PRINT "      300 PRINT " CHR$(162)"X IS" CHR$(162)"X" CHR$(162)"Y IS" CHR$(162)"Y"
  312. 3990  PRINT ""
  313. 3991  GOSUB 9999
  314. 4000  PRINT "      THE PET PRINTS    X IS 4 Y IS -6"
  315. 4010  PRINT ""
  316. 4020  PRINT "      THE APPLE PRINTS  X IS4Y IS-6"
  317. 4030  PRINT ""
  318. 4040  PRINT "      EITHER THIS WILL NOT MATTER, OR"
  319. 4050  PRINT "      IT IS AN EASY THING TO TIDY UP."
  320. 4060  PRINT "      IN TIDYING THIS UP,  CHANGE ALL"
  321. 4070  PRINT "      THE " CHR$(162)"TAB" CHR$(162)" FIELDS TO GO ONE MORE"
  322. 4080  PRINT "      COLUMN THAN THEY DID IN THE PET."
  323. 4090  PRINT ""
  324. 4100  PRINT "   6. THE " CHR$(162)"TAB" CHR$(162)" OPERATION"
  325. 4110  PRINT ""
  326. 4120  PRINT "      IN THE PET, A PROGRAM CAN " CHR$(162)"TAB" CHR$(162)""
  327. 4130  PRINT "      PAST WHAT IS ALREADY SHOWING ON"
  328. 4140  PRINT "      THE SCREEN, AND IT CONTINUES TO"
  329. 4150  PRINT "      SHOW, BUT THE APPLE BLANKS DATA"
  330. 4160  PRINT "      WHICH IS " CHR$(162)"TABBED" CHR$(162)" OVER.  " CHR$(162)"HTAB" CHR$(162)""
  331. 4170  PRINT "      CAN BE SUBSTITUTED, AS FOLLOWS:"
  332. 4180  PRINT ""
  333. 4190  PRINT "      PET:    PRINT TAB(11) " CHR$(162)"XYZ" CHR$(162)""
  334. 4200  PRINT ""
  335. 4210  PRINT "      APPLE:  HTAB 12 : PRINT " CHR$(162)"XYZ" CHR$(162)""
  336. 4220  PRINT ""
  337. 4221  GOSUB 9999
  338. 4230  PRINT "   7. BOOLEAN ARITHMETIC"
  339. 4240  PRINT ""
  340. 4250  PRINT "      400 X=9:Y=4:Z=X>Y"
  341. 4260  PRINT "      410 IF Z THEN 500"
  342. 4270  PRINT ""
  343. 4280  PRINT "      Z IS SET TO -1 IN THE PET,  BUT"
  344. 4290  PRINT "      TO +1 IN THE APPLE. THIS IS NOT"
  345. 4300  PRINT "      ALWAYS A PROBLEM,  BECAUSE LINE"
  346. 4310  PRINT "      410 WILL  OPERATE  SIMILARLY IN"
  347. 4320  PRINT "      BOTH  COMPUTERS,  GOING TO LINE "
  348. 4330  PRINT "      500  IN THIS CASE,  BUT  IF ANY"
  349. 4340  PRINT "      COMPUTATION  IS  DONE  USING Z,"
  350. 4350  PRINT "      EXPECT  SUBTLY  WRONG  RESULTS."
  351. 4360  PRINT ""
  352. 4370  PRINT "      FURTHERMORE,  THE PET DOES BIT-"
  353. 4380  PRINT "      BY-BIT BOOLEAN OPERATIONS, E.G."
  354. 4390  PRINT "      "
  355. 4400  PRINT "         '31 AND 56' HAS THE VALUE 24"
  356. 4410  PRINT ""
  357. 4420  PRINT "          1F     38     (HEX)      18"
  358. 4430  PRINT ""
  359. 4440  PRINT "      APPLE GIVES THE DULL RESULT '1'"
  360. 4450  PRINT "      BECAUSE NEITHER 31 NOR 56 IS 0."
  361. 4451  GOSUB 9999
  362. 4460  PRINT ""
  363. 4470  PRINT "   8. RANDOM NUMBERS"
  364. 4480  PRINT ""
  365. 4490  PRINT "      RND (0) GIVES DIFFERENT RESULTS"
  366. 4500  PRINT "      EVERY TIME IN THE PET,  BUT THE"
  367. 4510  PRINT "      SAME RESULT ALWAYS IN THE APPLE."
  368. 4520  PRINT "      SIMPLY REPLACE THE ZERO WITH 1."
  369. 4530  PRINT ""
  370. 4540  PRINT "   9. " CHR$(162)"GET" CHR$(162)" COMMAND"
  371. 4550  PRINT ""
  372. 4560  PRINT "      IN THE PET, " CHR$(162)"GET" CHR$(162)" DOES NOT WAIT"
  373. 4570  PRINT "      FOR A KEYSTROKE, BUT IT DOES IN"
  374. 4580  PRINT "      THE APPLE. SOMETIMES THE " CHR$(162)"GET" CHR$(162)""
  375. 4590  PRINT "      MUST BE REPLACED WITH A PEEK AT"
  376. 4600  PRINT "      THE KEYBOARD:"
  377. 4610  PRINT ""
  378. 4620  PRINT "        550 GET A$:IF A$ = " CHR$(162)"" CHR$(162)" THEN 600"
  379. 4630  PRINT ""
  380. 4640  PRINT "      MUST BECOME"
  381. 4650  PRINT ""
  382. 4660  PRINT "        550 IF PEEK(-16384) < 128 "
  383. 4670  PRINT "            THEN A$ = " CHR$(162)"" CHR$(162)" : GOTO 600"
  384. 4680  PRINT "        551 GET A$"
  385. 4681  GOSUB 9999
  386. 4690  PRINT ""
  387. 4700  PRINT "      MORE OFTEN, I HAVE FOUND"
  388. 4710  PRINT ""
  389. 4720  PRINT "        580 GET A$:IF A$ = " CHR$(162)"" CHR$(162)" THEN 580"
  390. 4730  PRINT ""
  391. 4740  PRINT "      WHICH CAN EITHER BE LEFT ALONE"
  392. 4750  PRINT "      OR REDUCED TO "
  393. 4760  PRINT ""
  394. 4770  PRINT "        580 GET A$"
  395. 4780  PRINT ""
  396. 4790  PRINT "  10. GRAPHICS CHARACTERS"
  397. 4800  PRINT ""
  398. 4810  PRINT "      ALMOST EVERY KEY OF THE PET CAN,"
  399. 4820  PRINT "      WHEN SHIFTED,  PRODUCE A SPECIAL"
  400. 4830  PRINT "      CHARACTER. 'PET LOADER' DOES ONE"
  401. 4840  PRINT "      THING ONLY  IN THIS  REGARD:  IF"
  402. 4850  PRINT "      THE PROGRAM CONTAINS  NO SHIFTED"
  403. 4860  PRINT "      LETTER-O, THEN ANY OCCURENCES OF"
  404. 4870  PRINT "      SHIFTED  LETTERS  A, S, Z, AND X"
  405. 4880  PRINT "      ARE  ASSUMED  TO BE  SYMBOLS FOR"
  406. 4890  PRINT "      SUITS  OF A DECK  OF CARDS,  AND"
  407. 4900  PRINT "      ARE CHANGED  RESPECTIVELY TO  S,"
  408. 4910  PRINT "      H, D, AND C.  (THIS MAY TURN OUT"
  409. 4911  GOSUB 9999
  410. 4920  PRINT "      WRONG EITHER WAY, BUT IT WAS FUN"
  411. 4930  PRINT "      TO PROGRAM!)"
  412. 4940  PRINT ""
  413. 4950  PRINT "  11. ASCII VALUE OF A LETTER"
  414. 4960  PRINT ""
  415. 4970  PRINT "      ASC( ANY LETTER ) IS 64  LESS IN"
  416. 4980  PRINT "      THE PET THAN IT IS IN THE APPLE."
  417. 4990  PRINT ""
  418. 5000  PRINT "  12. DIRECT SCREEN ADDRESSING"
  419. 5010  PRINT ""
  420. 5020  PRINT "      THE PET HAS 25 LINES, AND EACH"
  421. 5030  PRINT "      BYTE CAN BE ADDRESSED AS:"
  422. 5040  PRINT ""
  423. 5050  PRINT "        32768 + 40 * LINE + COLUMN"
  424. 5060  PRINT ""
  425. 5070  PRINT "      WHERE THE UPPER LEFT CORNER IS"
  426. 5080  PRINT "      LINE 0, COLUMN 0. "
  427. 5090  PRINT ""
  428. 5100  PRINT "      THE APPLE HAS 24 LINES, AND EACH"
  429. 5110  PRINT "      BYTE CAN BE ADDRESSED AS:"
  430. 5120  PRINT ""
  431. 5130  PRINT "        XL%( LINE ) + COLUMN"
  432. 5140  PRINT ""
  433. 5141  GOSUB 9999
  434. 5150  PRINT "      WHERE XL% HAS BEEN INITIALIZED:"
  435. 5160  PRINT ""
  436. 5170  PRINT "        1 DIM XL%(23) : FOR I=0 TO 7 :"
  437. 5180  PRINT "          XL%(I)    = 1024 + 128 * I :"
  438. 5190  PRINT "          XL%(I + 8)= 1064 + 128 * I :"
  439. 5200  PRINT "          XL%(I +16)= 1104 + 128 * I :"
  440. 5210  PRINT "          NEXT"
  441. 5220  PRINT " "
  442. 5230  PRINT "  13. SOUND"
  443. 5240  PRINT ""
  444. 5250  PRINT "      THE  STOCK  PET IS  MUTE,  BUT A"
  445. 5260  PRINT "      SIMPLE METHOD OF USING THE " CHR$(162)"CB2" CHR$(162)""
  446. 5270  PRINT "      OUTPUT TO DRIVE AN AMPLIFIER HAS"
  447. 5280  PRINT "      BECOME  POPULAR.  DISCOVERY OF A"
  448. 5290  PRINT "      POKE TO 59466 IS A DEAD GIVEAWAY"
  449. 5300  PRINT "      THAT THIS TACTIC IS IN USE. THIS"
  450. 5310  PRINT "      ADDRESS IS IN APPLE'S ROM SPACE,"
  451. 5320  PRINT "      THEREFORE  POKE  HAS  NO EFFECT."
  452. 5330  PRINT ""
  453. 5340  PRINT "  14. HARDWARE TIMER"
  454. 5350  PRINT ""
  455. 5360  PRINT "      PET HAS A  GENUINE TIMER,  WHICH"
  456. 5370  PRINT "      PROGRAMS CAN ADDRESS AS VARIABLE"
  457. 5371  GOSUB 9999
  458. 5380  PRINT "      " CHR$(162)"TI" CHR$(162)" OR  STRING " CHR$(162)"TI$" CHR$(162)".  ACCURATE"
  459. 5390  PRINT "      TIMING CAN  BE DONE  BY MEANS OF"
  460. 5400  PRINT "      THE  DELAY  LOOP AT  $FCA8,  AND"
  461. 5410  PRINT "      ROUGH TIMING CAN BE ACCOMPLISHED"
  462. 5420  PRINT "      WITH A SIMPLE FOR-NEXT LOOP. THE"
  463. 5430  PRINT "      APPLE   CANNOT  MEASURE  ELAPSED"
  464. 5440  PRINT "      TIME."
  465. 5450  PRINT ""
  466. 5460  PRINT "  15. PI"
  467. 5470  PRINT ""
  468. 5480  PRINT "      A SINGLE KEY ON THE PET PROVIDES"
  469. 5490  PRINT "      THE NUMBER " CHR$(162)"PI" CHR$(162)", 3.14159265 ETC."
  470. 5500  PRINT "      NO SUCH  FACILITY  EXISTS IN THE"
  471. 5510  PRINT "      APPLE,  SO THE PET TOKEN $FF FOR"
  472. 5520  PRINT "      PI IS TRANSLATED INTO $FB, WHICH"
  473. 5530  PRINT "      APPROPRIATELY ENOUGH, IS APPLE'S"
  474. 5540  PRINT "      TOKEN FOR  " CHR$(162)" UNDEF'D FUNCTION " CHR$(162)"."
  475. 5550  PRINT "      THIS CONSTITUTES A SYNTAX ERROR,"
  476. 5560  PRINT "      WHICH CAN BE  EASILY  CORRECTED."
  477. 5570  PRINT " "
  478. 5580  PRINT "*****   9. CREDITS"
  479. 5590  PRINT ""
  480. 5600  PRINT "I  RECEIVED  A LOT  OF  HELP  IN  THIS"
  481. 5601  GOSUB 9999
  482. 5610  PRINT "PROJECT,   ALL  OF   IT  FROM   GORDON"
  483. 5620  PRINT "CAMPBELL   OF  TORONTO,  WHO  PROVIDED"
  484. 5630  PRINT "MANUALS,   CLIPPINGS,   ADVICE,    AND"
  485. 5640  PRINT "SEVERAL   DOZEN  PET  PROGRAMS.   GORD"
  486. 5650  PRINT "RECEIVED  SEVERAL  APPLESOFT  PROGRAMS"
  487. 5660  PRINT "IN EXCHANGE,  AND HE LOADED  THEM INTO"
  488. 5670  PRINT "HIS PET!   ...  BUT THAT IS HIS STORY!"
  489. 5680  PRINT ""
  490. 5690  PRINT "*****   10. CONCLUSION"
  491. 5700  PRINT ""
  492. 5710  PRINT "'PET LOADER'  IS  A USEFUL  CONVERSION"
  493. 5720  PRINT "TOOL,  AND MAKES  A MULTITUDE  OF  PET"
  494. 5730  PRINT "PROGRAMS  AVAILABLE  TO MANY  USERS OF"
  495. 5740  PRINT "APPLE COMPUTERS.  FOR ME,  IT WAS ALSO"
  496. 5750  PRINT "EDUCATIONAL,  PROVIDING  EXPERIENCE IN"
  497. 5760  PRINT "6502  ASSEMBLY  LANGUAGE  AND  IN  THE"
  498. 5770  PRINT "VALUABLE  SKILL  OF DECIPHERING  OTHER"
  499. 5780  PRINT "PEOPLE'S PROGRAMS. "
  500. 5790  PRINT ""
  501. 5800  PRINT "REMEMBER THIS PROGRAM IS  ONLY A TOOL;"
  502. 5810  PRINT "THE FINAL  RESPONSIBILITY  FOR TURNING"
  503. 5820  PRINT "A PET  PROGRAM INTO AN  APPLE  PROGRAM"
  504. 5830  PRINT "MUST  ALWAYS   REST  WITH   THE  USER."
  505. 9998  VTAB 23: END 
  506. 9999  GET A$: IF A$ < > CHR$(3)  THEN  HOME : RETURN